home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Copper / COPPER_CYCLE_ASS.LST < prev    next >
File List  |  1989-06-01  |  4KB  |  162 lines

  1. ' User-Copper  II mit IRQ-Assembler Teil
  2. '
  3. @irqposition
  4. @usercop_lÄnge
  5. @memory_copperbereit
  6. @user_copper_an
  7. '
  8. @irq_an
  9. REPEAT
  10. UNTIL MOUSEK=3
  11. @irq_aus
  12. '
  13. @user_copper_aus
  14. EDIT
  15. '
  16. > PROCEDURE datas
  17.   DATA $0180,$0000
  18.   DATA $7701,$fffe
  19.   DATA $0180,$0f00
  20.   DATA $7801,$fffe
  21.   DATA $0180,$0f10
  22.   DATA $7901,$fffe
  23.   DATA $0180,$0f20
  24.   DATA $7a01,$fffe
  25.   DATA $0180,$0f40
  26.   DATA $7b01,$fffe
  27.   DATA $0180,$0f60
  28.   DATA $7c01,$fffe
  29.   DATA $0180,$0f70
  30.   DATA $7d01,$fffe
  31.   DATA $0180,$0f80
  32.   DATA $7e01,$fffe
  33.   DATA $0180,$0f90
  34.   DATA $7f01,$fffe
  35.   DATA $0180,$0fa0
  36.   DATA $8001,$fffe
  37.   DATA $0180,$0fb0
  38.   DATA $8101,$fffe
  39.   DATA $0180,$0fc0
  40.   DATA $8201,$fffe
  41.   DATA $0180,$0fd0
  42.   DATA $8301,$fffe
  43.   DATA $0180,$0fe0
  44.   DATA $8401,$fffe
  45.   DATA $0180,$0ff0
  46.   DATA $8501,$fffe
  47.   DATA $0180,$0ff1
  48.   DATA $8601,$fffe
  49.   DATA $0180,$0ff2
  50.   DATA $8701,$fffe
  51.   DATA $0180,$0ff3
  52.   DATA $8801,$fffe
  53.   DATA $0180,$0ff4
  54.   DATA $8901,$fffe
  55.   DATA $0180,$0ff5
  56.   DATA $8a01,$fffe
  57.   DATA $0180,$0ef5
  58.   DATA $8b01,$fffe
  59.   DATA $0180,$0df5
  60.   DATA $8c01,$fffe
  61.   DATA $0180,$0cf5
  62.   DATA $8d01,$fffe
  63.   DATA $0180,$0bf4
  64.   DATA $8e01,$fffe
  65.   DATA $0180,$0af3
  66.   DATA $8f01,$fffe
  67.   DATA $0180,$09f2
  68.   DATA $9001,$fffe
  69.   DATA $0180,$08f1
  70.   DATA $9101,$fffe
  71.   DATA $0180,$07f2
  72.   DATA $9201,$fffe
  73.   DATA $0180,$06e3
  74.   DATA $9301,$fffe
  75.   DATA $0180,$06d3
  76.   DATA $9401,$fffe
  77.   DATA $0180,$06c3
  78.   DATA $9501,$fffe
  79.   DATA $0180,$06b3
  80.   DATA $9601,$fffe
  81.   DATA $0180,$06a3
  82.   DATA $9801,$fffe
  83.   DATA $0180,$0693
  84.   DATA $9901,$fffe
  85.   DATA $0180,$0683
  86.   DATA $9a01,$fffe
  87.   DATA $0180,$0673
  88.   DATA $9b01,$fffe
  89.   DATA $0180,$0664
  90.   DATA $9c01,$fffe
  91.   DATA $0180,$0655
  92.   DATA $9d01,$fffe
  93.   DATA $0180,$0555
  94.   DATA $9e01,$fffe
  95.   DATA $0180,$0546
  96.   DATA $9f01,$fffe
  97.   DATA $0180,$0
  98.   DATA $ffff
  99. RETURN
  100. > PROCEDURE usercop_lÄnge
  101.   DO
  102.     READ x%
  103.     EXIT IF x%=&HFFFF
  104.     INC anz%          ! Anzahl Worte
  105.   LOOP
  106.   MUL anz%,2          ! Anzahl Bytes
  107.   ' Für die Maschinenroutine brauchen wir die Anzahl der Farbwerte
  108.   lÄnge%=SHR(anz%,3) ! Anzahl Farbwerte für IRQ (=DIV anz%/8)
  109.   RESTORE
  110. RETURN
  111. > PROCEDURE memory_copperbereit
  112.   altcop%=LPEEK(_GfxBase+50)   ! Copper-Auto-Vector relativ zu GFXBASE retten
  113.   mem%=76+anz%
  114.   u_copadr%=MALLOC(mem%,2)
  115.   neu_copadr%=u_copadr%
  116.   startcop%=altcop%+84
  117.   ' Startliste des Systems Kopieren
  118.   BMOVE startcop%,neu_copadr%,60
  119.   ' Unsere Liste initialisieren
  120.   CLR zeiger&,x%
  121.   RESTORE
  122.   ' Unseren Adress-Zeiger erhöhen
  123.   ADD neu_copadr%,60
  124.   DO
  125.     READ x%
  126.     EXIT IF x%=&HFFFF
  127.     DPOKE neu_copadr%+zeiger&,x%
  128.     ADD zeiger&,2
  129.   LOOP
  130.   ' End Liste des Systems Kopieren
  131.   ADD startcop%,60
  132.   ADD neu_copadr%,anz%
  133.   BMOVE startcop%,neu_copadr%,16
  134. RETURN
  135. > PROCEDURE user_copper_an
  136.   VSYNC
  137.   LONG{_GfxBase+50}=u_copadr%
  138. RETURN
  139. > PROCEDURE user_copper_aus
  140.   VSYNC
  141.   LONG{_GfxBase+50}=altcop%     ! Alten Vector zurück
  142.   x%=MFREE(u_copadr%,mem%)
  143. RETURN
  144. > PROCEDURE irqposition
  145.   INLINE irq%,66
  146. RETURN
  147. > PROCEDURE irq_an
  148.   altirq%=LPEEK(108)            ! Alten IRQ-Vector lesen
  149.   DPOKE &HDFF09A,&H4000         ! Alle IRQs Stoppen (Master-IRQ aus)
  150.   LONG{irq%+18}=u_copadr%+70    ! Position 1.Farbe der Copperliste schreiben
  151.   LONG{irq%+24}=u_copadr%+78    ! Position nächste Farbe schreiben
  152.   LONG{irq%+32}=lÄnge%-4        ! Anzahl der Farbwerte in der Copperliste
  153.   LONG{irq%+62}=altirq%         ! Jump-Adresse zum System schreiben
  154.   LONG{108}=irq%                ! Neuen (unseren) IRQ-Vector schreiben
  155.   DPOKE &HDFF09A,&HC000         ! IRQs wieder zulassen.. (Start)
  156. RETURN
  157. > PROCEDURE irq_aus
  158.   DPOKE &HDFF09A,&H4000          ! IRQs stoppen
  159.   LONG{108}=altirq%               ! System-Vector wieder herstellen
  160.   DPOKE &HDFF09A,&HC000           ! IRQs starten
  161. RETURN
  162.